package com.gxa.community.admin.service.user.impl;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.gxa.community.admin.mapper.user.UserTagsMapper;
import com.gxa.community.admin.service.user.UserTagsService;
import com.gxa.community.core.pojo.domain.UserTags;
import com.gxa.community.core.pojo.dto.userdto.UserTagsDto;
import com.gxa.community.core.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

import java.util.List;

/**
 * @author juran
 * @since 2022-07-19
 */
@Service
public class UserTagsServiceImpl extends ServiceImpl<UserTagsMapper, UserTags> implements UserTagsService {

    @Autowired
    UserTagsMapper userTagsMapper;

    @Override
    public R editUserTags(UserTagsDto userTagsDto) {
        boolean save = save(userTagsDto.getUserTags());
        return save ? R.ok() : R.error();
    }

    @Override
    public R queryUserTags(UserTagsDto userTagsDto) {
        int page = ObjectUtils.isEmpty(userTagsDto.getCurrentPage()) ? 1 : userTagsDto.getCurrentPage();
        int size = ObjectUtils.isEmpty(userTagsDto.getPageSize()) ? 5 : userTagsDto.getCurrentPage();

        PageHelper.startPage(page, size);

        List<UserTags> userTags = !ObjectUtils.isEmpty(userTagsDto.getTagName()) ?
                userTagsMapper.selectList(Wrappers.lambdaQuery(UserTags.class)
                        .eq(UserTags::getName, userTagsDto.getTagName())) :
                userTagsMapper.selectList(Wrappers.lambdaQuery(UserTags.class));

        PageInfo pageInfo = new PageInfo(userTags, size);

        return !ObjectUtils.isEmpty(pageInfo.getList()) ?
                R.ok().put("data", pageInfo) :
                R.error();
    }

    @Override
    public R delUserTags(UserTagsDto userTagsDto) {
        return userTagsMapper.delete(Wrappers.lambdaQuery(UserTags.class).eq(UserTags::getId, userTagsDto.getUserTags().getId())) > 0 ?
                R.ok() :
                R.error();
    }

    @Override
    public R addUserTags(UserTagsDto userTagsDto) {
        return null;
    }
}
